package org.hrc.puzzleGame.view;

import org.hrc.puzzleGame.util.Util;

import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.KeyEvent;

public abstract class DoorFrame extends BaseFrame {

    // 文本框
    // 用户名
    public static final JTextField userNameJtextField = new JTextField();
    // 密码
    public static final JTextField passwordJTextField = new JTextField();
    // 验证码
    public static final JTextField codeJTextField = new JTextField();

    // 文字和图片
    public static final JLabel userNameJLabel = new JLabel("用户名");
    public static final JLabel passwordJLabel = new JLabel("密码");
    public static final JLabel codeJLabel = new JLabel("验证码");
    // 背景
    public static final JLabel background = new JLabel(new ImageIcon("image\\background.png"));

    // 按钮
    // 验证码
    public static final JButton codeJButton = new JButton();
    // 显示密码
    public static final JButton showPasswordJButton = new JButton(new ImageIcon("image\\login\\显示密码.png"));
    // 验证码
    String code = Util.code();

    public DoorFrame() {
        super();
        initFrame();
        initButton();
        initWord();
        setVisible(true);
    }

    @Override
    // 初始化窗口
    public void initFrame() {

        setSize(600, 700);
        // 将窗口放在屏幕中心
        setLocationRelativeTo(null);
        // 取消中间放置布局
        setLayout(null);
        addKeyListener(this);
        // 设置点击×效果
        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    }

    @Override
    // 初始化文本框和文字
    public void initWord() {
        // 添加文本框和文字
        // 用户名
        userNameJLabel.setBounds(100, 150, 200, 50);
        container.add(userNameJLabel);
        userNameJtextField.setBounds(200, 150, 200, 50);
        userNameJtextField.addKeyListener(this);
        container.add(userNameJtextField);
        userNameJtextField.setVisible(true);
        // 密码
        passwordJLabel.setBounds(100, 250, 200, 50);
        container.add(passwordJLabel);
        passwordJTextField.setBounds(200, 250, 200, 50);
        passwordJTextField.addKeyListener(this);
        container.add(passwordJTextField);
        passwordJTextField.setVisible(true);
        // 验证码
        codeJLabel.setBounds(100, 350, 200, 50);
        container.add(codeJLabel);
        codeJTextField.setBounds(200, 350, 100, 50);
        codeJTextField.addKeyListener(this);
        container.add(codeJTextField);
        codeJTextField.setVisible(true);
    }

    @Override
    // 初始化按钮
    public void initButton() {
        // 添加按钮
        // 验证码
        codeJButton.setText(code);
        codeJButton.setBounds(300, 350, 100, 50);
        codeJButton.addActionListener(this);
        codeJButton.setVisible(true);
        container.add(codeJButton);
        // 显示密码
        showPasswordJButton.setBounds(400, 250, 50, 50);
        showPasswordJButton.addActionListener(this);
        showPasswordJButton.setVisible(true);
        container.add(showPasswordJButton);
    }
    @Override
    public  void initDialog(JLabel jLabel) {
        JDialog dialog = new JDialog();
        dialog.setSize(100, 100);
        dialog.getContentPane().add(jLabel);
        dialog.setLocationRelativeTo(null);
        dialog.setModal(true);
        dialog.setVisible(true);
    }
    // 验证参数
    public boolean verify() {
        if (userNameJtextField.getText().equals("")) {
            initDialog(new JLabel("用户名不能为空"));
            return false;
        } else if (passwordJTextField.getText().equals("")) {
            initDialog(new JLabel("密码不能为空"));
            return false;
        } else if (!codeJTextField.getText().equalsIgnoreCase(code)) {
            initDialog(new JLabel("验证码错误"));
            return false;
        }
        return true;
    }

    // 点击事件
    @Override
    public void actionPerformed(ActionEvent e) {
        Object obj = e.getSource();
        // 验证码
        if (obj == codeJButton) {
            code = Util.code();
            codeJButton.setText(code);
        }
    }

    @Override
    public void keyPressed(KeyEvent e) {
        int keyCode = e.getKeyCode();
        System.out.println(keyCode);
        Object obj = e.getSource();
        // 密码区
        if (obj == passwordJTextField) {

        }
    }

    @Override
    public void keyReleased(KeyEvent e) {
        int keyCode = e.getKeyCode();
        System.out.println(keyCode);
        Object obj = e.getSource();

        // 密码区
        if (obj == passwordJTextField) {
            // 禁用键 --密码禁止符
            int[] forbidKey = {67, 17, 16, 192, 20, 18, 524, 37, 10, 38, 39, 40};
            for (int x : forbidKey) {
                if (x == keyCode) return;
            }
        }
    }

    @Override
    public void keyTyped(KeyEvent e) {

    }
}
